export default {
	namespaced: true,
	state: () => ({
		// 购物车的数组，用来存储购物车中每个商品的信息对象
		// 每个商品的信息对象，都包含如下 6 个属性：
		// { goods_id, goods_name, goods_price, goods_count,goods_small_logo, goods_state }
		cart:JSON.parse(uni.getStorageSync('cart')||'[]')
	}),

	mutations: {
		// 商品信息加入购物车的 mutations 方法  有就数量加一  没有就push
		addToCart(state, goods) {
			const findResult = state.cart.find((item) => item.goods_id === goods.goods_id)
			// console.log(findResult)
			if (!findResult) {
			  state.cart.push(goods)
			} else {
				findResult.goods_count++
			}
			
			// console.log(state.cart)
			// 只要修改的购物车数据就调用
			this.commit('m_cart/saveToStorage')
		},
		// 持久化购物车
		saveToStorage(state){
			uni.setStorageSync('cart',JSON.stringify(state.cart))
		},
		// 更新购物车中商品的勾选状态
		updateGoodsState(state,goods){
			 const findResult=state.cart.find(item=>item.goods_id===goods.goods_id)
			 if(findResult){
				 findResult.goods_state=goods.goods_state
				 this.commit('m_cart/saveToStorage')
			 }
		},
		// 更新购物车中商品的数量
		updateGoodsCount(state,goods){
			 const findResult= state.cart.find(item=>item.goods_id===goods.goods_id)
				if(findResult){
					findResult.goods_count=goods.goods_count
					this.commit('m_cart/saveToStorage')
				}
		},
		// 根据 Id 从购物车中删除对应的商品信息
		removeGoodsById(state,goods_id){
	     	  state.cart=state.cart.filter(item=>item.goods_id !== goods_id)
			  this.commit('m_cart/saveToStorage')
		},
		//  更新所有商品的勾选状态
		updateAllGoodsState(state,newState){
			state.cart.forEach(item=>item.goods_state=newState)
			this.commit('m_cart/saveToStorage')
		}
		
		
		
	},
	getters: {
		// 总数量
		total(state){
			const c =state.cart.reduce((pre,item)=>pre+item.goods_count,0)
			return c
		},
		//  选中的数量
		checkedCount(state){
			return  state.cart.filter(item=>item.goods_state).reduce((pre,item)=>pre+item.goods_count,0)
		},
		// 判断全选状态  赋值给全选按钮
		isFullCheck(state){
			return state.cart.every(item=>item.goods_state)
		},
		// 已勾选的商品的总价
		checkedGoodsAmount(state) {
			 return 	state.cart.filter(item=>item.goods_state).reduce((pre,item)=>pre+item.goods_count*item.goods_price,0).toFixed(2)
		}
		

	},
	actions: {

	}
}